home *** CD-ROM | disk | FTP | other *** search
- /*
- mod 12 4 86 tsh - inttotext
- mod 10 18 86 tsh - LSC 1.41 version
- MOD 07-18-86 MAZ - transportable MAZlib functions for lightspeedC
- */
-
- #include "MAZlib.h"
-
- short texttoint(str)
- char *str;
- {
- bool signed;
- short sum;
- char *p;
-
- /* collect an integer */
- p = str;
- signed = false;
- if (*p == '-')
- {
- p++;
- signed = true;
- }
- sum = 0;
- for (;*p;p++)
- {
- if (*p < '0' || *p > '9')
- continue;
- sum *= 10;
- sum += *p - '0';
- }
- /* and return number */
- if (signed)
- sum = -sum;
- return(sum);
- }
-
- /* append a short integer to a string (returns end of string) */
- char *inttotext(str, num)
- char *str;
- register short num;
- {
- register short i, divr;
- register char *p;
- bool digits_yet;
-
- digits_yet = false;
- p = str;
- divr = 10000;
- if (num < 0)
- {
- *p++ = '-';
- num = -num;
- }
- while (divr >= 10)
- {
- if (num >= divr || digits_yet)
- {
- i = num/divr;
- num -= (i*divr);
- *p++ = '0' + i;
- digits_yet = true;
- }
- divr /= 10;
- }
- *p++ = '0' + num;
- *p = 0;
- return(p);
- }
-
- char *cpystr(p,s)
- register char *p, *s;
- {
- for (;*s;p++,s++)
- *p = *s;
- *p = '\0';
- return(p);
- }
-
- #if 0
- /* now in assembly code */
- cpybuf(d,s,len)
- register char *d, *s;
- register short len;
- {
- if (d < s || d > s + len)
- {
- /* forwards move */
- for (;len > 0;len--,d++,s++)
- *d = *s;
- }
- else
- {
- /* backwards move */
- d += len;
- s += len;
- for (;len > 0;len--)
- {
- d--;
- s--;
- *d = *s;
- }
- }
- }
-
- longcpybuf(d,s,len)
- register char *d, *s;
- register long len;
- {
- if (d < s || d > s + len)
- {
- /* forwards move */
- for (;len > 0;len--,d++,s++)
- *d = *s;
- }
- else
- {
- /* backwards move */
- d += len;
- s += len;
- for (;len > 0;len--)
- {
- d--;
- s--;
- *d = *s;
- }
- }
- }
- #endif
-
- /* compare two char buffers */
- bool cmpbuf(p,q,len)
- register char *p, *q;
- register short len;
- {
- for (;len > 0;len--,p++,q++)
- if (*p != *q)
- return(false);
- return(true);
- }
-
- #if 0
- /* now in assembly code */
- fillbuffer(p,len,c)
- register char *p;
- register short len;
- register char c;
- {
- for (;len > 0;len--,p++)
- *p = c;
- }
-
- longfillbuffer(p,len,c)
- register char *p;
- register long len;
- register char c;
- {
- for (;len > 0;len--,p++)
- *p = c;
- }
- #endif
-
- upper(p,len)
- register char *p;
- register short len;
- {
- for (;len > 0;len--,p++)
- if (*p >= 'a' && *p <= 'z')
- *p -= 'a' - 'A';
- }
-
- lower(p,len)
- register char *p;
- register short len;
- {
- for (;len > 0;len--,p++)
- if (*p >= 'A' && *p <= 'Z')
- *p += 'a' - 'A';
- }
-
- /* search for char c in string s; if found, return its index. if not, */
- /* return the index of the null. */
- short scnstr(s,c)
- register char *s;
- register char c;
- {
- register char *p;
-
- for (p = s;*s;s++)
- if (*s == c)
- break;
- return(s - p);
- }
-
- insqueue(p,e)
- register queue *p, *e;
- {
- queue *n;
-
- n = p->que_next;
- e->que_next = n;
- e->que_prev = p;
- p->que_next = e;
- n->que_prev = e;
- }
-
- remqueue(e)
- register queue *e;
- {
- e->que_prev->que_next = e->que_next;
- e->que_next->que_prev = e->que_prev;
- }
-
- initqueue(qp)
- register queue *qp;
- {
- qp->que_next = qp;
- qp->que_prev = qp;
- }
-
- bool emptyqueue(qp)
- register queue *qp;
- {
- if (qp->que_next == qp)
- return(true);
- return(false);
- }
-
- short countqueue(qp)
- register queue *qp;
- {
- register queue *e;
- register short i;
-
- for (i = 0,e = qp->que_next;e != qp;e = e->que_next,i++)
- ;
- return(i);
- }
-
- short ffset(p,n,o)
- register char *p;
- register short n;
- register short o;
- {
- register short i;
-
- for (i = o;i < n;i++)
- if (BitTst(p,i))
- break;
- return(i);
- }
-
- short rotate(i,count)
- register unsigned short i;
- register short count;
- {
- register short k, j;
-
- count &= 0x000F; /* mask to 16 bits */
- if (count == 0)
- return(i);
- k = i<<count;
- j = i>>(16-count);
- return(k|j);
- }
-